ইলাস্টিকসার্চ (ElasticSearch)

Shard Allocation এবং Rebalancing

Latest Technologies - ইলাস্টিকসার্চ (ElasticSearch) - Elasticsearch Cluster এবং Shard Management | NCTB BOOK

Elasticsearch-এ Shard Allocation

Elasticsearch-এ শার্ড অ্যালোকেশন কনফিগার করার জন্য বেশ কিছু সেটিংস এবং প্যারামিটার আছে যা cluster এবং node level এ প্রভাব ফেলে। কিছু গুরুত্বপূর্ণ কনসেপ্ট ও কনফিগারেশন:

Cluster.routing.allocation.enable:

  • এটি শার্ড অ্যালোকেশন নিয়ন্ত্রণ করার জন্য ব্যবহৃত হয়।
  • ভ্যালু হতে পারে:
    • "all": সমস্ত প্রাইমারি এবং রেপ্লিকা শার্ড অ্যালোকেট করার অনুমতি দেয়।
    • "primaries": শুধুমাত্র প্রাইমারি শার্ডগুলো অ্যালোকেট করা হয়।
    • "new_primaries": নতুন প্রাইমারি শার্ড অ্যালোকেট করার অনুমতি দেয়।
    • "none": কোনো শার্ডই অ্যালোকেট করা হবে না।

Awareness Allocation:

  • শার্ডগুলো যাতে নির্দিষ্ট জোন বা rack-এ অবস্থিত থাকে তা নিশ্চিত করতে Elasticsearch-এ zone awareness এবং rack awareness কনফিগার করা যায়। এটি নিশ্চিত করে যে একটি জোন ডাউন হয়ে গেলেও অন্য জোনে শার্ডের কপি থাকে।
  • উদাহরণ:
  • এখানে, শার্ডগুলোকে বিভিন্ন rack_id-তে বিতরণ করা হবে।
{
  "cluster.routing.allocation.awareness.attributes": "rack_id"
}

Allocation Filtering:

  • নির্দিষ্ট শার্ড বা ইন্ডেক্সগুলোকে নির্দিষ্ট নোডে অ্যালোকেট করতে এটি ব্যবহার করা হয়।
  • উদাহরণ:
  • এই সেটিংসটি নিশ্চিত করবে যে শার্ডগুলি শুধুমাত্র node-1 এ অ্যালোকেট হবে।
{
  "cluster.routing.allocation.include._name": "node-1"
}

Elasticsearch-এ Shard Rebalancing

Elasticsearch-এ Shard Rebalancing স্বয়ংক্রিয়ভাবে কাজ করে, কিন্তু কিছু সেটিংস আছে যা কাস্টমাইজ করা যায়:

Cluster.routing.rebalance.enable:

  • রিব্যালেন্সিং কন্ট্রোল করার জন্য ব্যবহৃত হয়।
  • ভ্যালু হতে পারে:
    • "all": সমস্ত শার্ড রিব্যালেন্স করা হয়।
    • "primaries": শুধু প্রাইমারি শার্ডগুলো রিব্যালেন্স করা হয়।
    • "replicas": শুধু রেপ্লিকা শার্ড রিব্যালেন্স করা হয়।
    • "none": কোনো শার্ড রিব্যালেন্স করা হবে না।

Rebalance Throttling:

  • একবারে কতগুলো শার্ড রিব্যালেন্স হতে পারবে তা নির্ধারণ করতে cluster.routing.allocation.cluster_concurrent_rebalance প্যারামিটারটি ব্যবহার করা যায়।
  • উদাহরণ:
  • এটি নিশ্চিত করবে যে একবারে সর্বোচ্চ ২টি শার্ড রিব্যালেন্স হবে।
{
  "cluster.routing.allocation.cluster_concurrent_rebalance": 2
}

Disk-based Shard Allocation:

  • Elasticsearch নোডগুলোর ডিস্ট্রিবিউশন মনিটর করে, যাতে ডিস্ক স্পেস কমে গেলে স্বয়ংক্রিয়ভাবে শার্ডগুলো অন্য নোডে মুভ করাতে পারে।
  • প্যারামিটারগুলো:
    • "cluster.routing.allocation.disk.threshold_enabled": true
    • "cluster.routing.allocation.disk.watermark.low": "85%" (ডিফল্ট)
    • "cluster.routing.allocation.disk.watermark.high": "90%" (ডিফল্ট)

Elasticsearch-এ Shard Allocation এবং Rebalancing মনিটর করা

  1. Cluster Health API:
    • GET /_cluster/health দিয়ে ক্লাস্টারের হেলথ চেক করতে পারেন।
  2. Cluster Allocation Explanation API:
    • GET /_cluster/allocation/explain দিয়ে জানতে পারেন কেন কোনো শার্ড নির্দিষ্ট নোডে অ্যালোকেট হয়নি বা মুভ হয়নি।

Practical Tips:

  • Shard Size: সাধারণত, একটি শার্ডের সাইজ ১০-৫০ গিগাবাইটের মধ্যে রাখার চেষ্টা করবেন, কারণ খুব বড় শার্ড ক্লাস্টারের পারফরম্যান্সে প্রভাব ফেলতে পারে।
  • Shard Count Optimization: শার্ডের সংখ্যা অত্যধিক হলে পারফরম্যান্স সমস্যার সম্মুখীন হতে পারেন। সঠিক সাইজিং এবং কনফিগারেশন ক্লাস্টারের স্কেলেবিলিটি বাড়ায়।
  • Monitoring and Alerts: শার্ড অ্যালোকেশন ও রিব্যালেন্সিং মনিটরিং-এর জন্য Kibana এবং Elasticsearch monitoring plugin ব্যবহার করতে পারেন।

এভাবে Elasticsearch-এ shard allocation এবং rebalancing কনফিগার করা এবং মনিটর করা যায়, যা পারফরম্যান্স এবং রিলায়েবিলিটি নিশ্চিত করতে সাহায্য করে।

Content added By

আরও দেখুন...

Promotion